package cn.jly.bigdata.spark.core

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author lanyangji
 * @date 2019/11/24 10:47
 */
object Spark02_expr6 {

  def main(args: Array[String]): Unit = {

    // local模式

    // 创建 SparkConf 对象
    // 这边也自定义了本地的模式（分配多少个cpu）
    // app id
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("wordCount")

    // 创建spark上下文对象，SparkContext -> sc
    val sc = new SparkContext(sparkConf)

    val listRDD: RDD[Int] = sc.makeRDD(List(1, 2, 3,4))

    // groupBy算子
    // 按照传入函数的返回值进行分组
    // 返回的k-v对，k是func的返回值，v是得到这个结果的数的集合
    val groupByRDD: RDD[(Int, Iterable[Int])] = listRDD.groupBy(i => i % 2)

    groupByRDD.collect.foreach(println)

    println

    // filter算子
    val listStrRDD: RDD[String] = sc.makeRDD(List("xiao ming", "xiao hong", "tom", "kitty", "xiao gang"))

    val filterRDD: RDD[String] = listStrRDD.filter(_.contains("xiao"))

    filterRDD.collect.foreach(println)
  }
}
